|
sgdk
|
3D math engine. More...
Go to the source code of this file.
Classes | |
| struct | Context3D |
| struct | Transformation3D |
Typedefs | |
| typedef Vect3D_f16 | Translation3D |
| typedef Vect3D_f16 | Rotation3D |
Functions | |
| void | M3D_reset () |
| Reset math 3D engine (reset matrices and transformation parameters mainly). | |
| void | M3D_setLightEnabled (u16 enabled) |
| Enable or disable light transformation calculation. | |
| u16 | M3D_getLightEnabled () |
| Get light transformation calculation enabled flag. | |
| void | M3D_setViewport (u16 w, u16 h) |
| Set viewport dimension. | |
| void | M3D_setCamDistance (fix16 value) |
| Set camera scene distance. | |
| void | M3D_setLightXYZ (fix16 x, fix16 y, fix16 z) |
| Set light direction vector. | |
| void | M3D_setLight (Vect3D_f16 *value) |
| Set light direction vector. | |
| void | M3D_resetTransform (Transformation3D *t) |
| Reset the specified rotation object. | |
| void | M3D_setTransform (Transformation3D *tr, Translation3D *t, Rotation3D *r) |
| Set translation and rotation objects to the specified transformation object. | |
| void | M3D_setTranslation (Transformation3D *t, fix16 x, fix16 y, fix16 z) |
| Set translation parameters to the specified transformation object. | |
| void | M3D_setRotation (Transformation3D *t, fix16 x, fix16 y, fix16 z) |
| Set rotation parameters to the specified Transformation3D object. Be careful, value is not given in radiant. [-8..+8] range correspond to radian [-PI..+PI] range. | |
| void | M3D_combineTransform (Transformation3D *left, Transformation3D *right, Transformation3D *result) |
Combine the specified right and left Transformation3D objects and store result in result. result cannot be the same transformation object as left or right. | |
| void | M3D_combineTranslationLeft (Translation3D *left, Transformation3D *right, Transformation3D *result) |
Combine the specified left Translation3D and right Transformation3D and store result in result.right and result transformation object can be the same. | |
| void | M3D_combineTranslationRight (Transformation3D *left, Translation3D *right, Transformation3D *result) |
Combine the specified left Transformation3D with right Translation3D and store result in result.left and result transformation object can be the same. | |
| void | M3D_buildMat3D (Transformation3D *t) |
| Build the transformation matrix of the specified Transformation3D object. This also rebuild cached informations as inverse transformation matrix, inverse camera view... | |
| void | M3D_buildMat3DOnly (Transformation3D *t) |
| Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild. | |
| void | M3D_buildMat3DExtras (Transformation3D *t) |
| Only rebuild the cached infos as inverse matrix, inverse camera view... | |
| void | M3D_translate (Transformation3D *t, Vect3D_f16 *vertices, u16 numv) |
| Process 3D translation only to specified 3D vertices buffer. | |
| void | M3D_rotate (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv) |
| Process 3D rotation only to specified 3D vertices buffer. | |
| void | M3D_rotateInv (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest) |
| Process 3D inverse rotation only to specified 3D vertex. | |
| void | M3D_transform (Transformation3D *t, const Vect3D_f16 *src, Vect3D_f16 *dest, u16 numv) |
| Process 3D transform (rotation and translation) to specified 3D vertices buffer. | |
| void | M3D_project_f16 (const Vect3D_f16 *src, Vect2D_f16 *dest, u16 numv) |
| Process 2D projection to specified 3D vertices buffer (fix16 version). | |
| void | M3D_project_s16 (const Vect3D_f16 *src, Vect2D_s16 *dest, u16 numv) |
| Process 2D projection to specified 3D vertices buffer (s16 version). | |
3D math engine.
This unit provides 3D transformation methods :
| void M3D_buildMat3D | ( | Transformation3D * | t | ) |
Build the transformation matrix of the specified Transformation3D object.
This also rebuild cached informations as inverse transformation matrix, inverse camera view...
| t | Transformation3D object. |
| void M3D_buildMat3DExtras | ( | Transformation3D * | t | ) |
Only rebuild the cached infos as inverse matrix, inverse camera view...
| t | Transformation object. |
| void M3D_buildMat3DOnly | ( | Transformation3D * | t | ) |
Build the transformation matrix of the specified transformation object. Only rebuild the transformation matrix (faster), cached infos as inverse matrix are not rebuild.
| t | Transformation object. |
| void M3D_combineTransform | ( | Transformation3D * | left, |
| Transformation3D * | right, | ||
| Transformation3D * | result | ||
| ) |
Combine the specified right and left Transformation3D objects and store result in result. result cannot be the same transformation object as left or right.
| left | Left Transformation3D object. |
| right | Right Transformation3D object. |
| result | Result Transformation3D object. |
| void M3D_combineTranslationLeft | ( | Translation3D * | left, |
| Transformation3D * | right, | ||
| Transformation3D * | result | ||
| ) |
Combine the specified left Translation3D and right Transformation3D and store result in result.
right and result transformation object can be the same.
| left | Left Transformation3D object. |
| right | Right Transformation3D object. |
| result | Result Transformation3D object. |
| void M3D_combineTranslationRight | ( | Transformation3D * | left, |
| Translation3D * | right, | ||
| Transformation3D * | result | ||
| ) |
Combine the specified left Transformation3D with right Translation3D and store result in result.
left and result transformation object can be the same.
| left | Left Transformation3D object. |
| right | Right Translation3D object. |
| result | Result Transformation3D object. |
| void M3D_project_f16 | ( | const Vect3D_f16 * | src, |
| Vect2D_f16 * | dest, | ||
| u16 | numv | ||
| ) |
Process 2D projection to specified 3D vertices buffer (fix16 version).
| src | Source 3D vertices buffer. |
| dest | Destination 2D vertices buffer - fix16 format |
| numv | Number of vertices to project. |
| void M3D_project_s16 | ( | const Vect3D_f16 * | src, |
| Vect2D_s16 * | dest, | ||
| u16 | numv | ||
| ) |
Process 2D projection to specified 3D vertices buffer (s16 version).
| src | Source 3D vertices buffer. |
| dest | Destination 2D vertices buffer - s16 format |
| numv | Number of vertices to project. |
| void M3D_rotate | ( | Transformation3D * | t, |
| const Vect3D_f16 * | src, | ||
| Vect3D_f16 * | dest, | ||
| u16 | numv | ||
| ) |
Process 3D rotation only to specified 3D vertices buffer.
| t | Transformation object containing rotation parameter. |
| src | Source 3D vertices buffer. |
| dest | Destination 3D vertices buffer. |
| numv | Number of vertices to rotate. |
| void M3D_rotateInv | ( | Transformation3D * | t, |
| const Vect3D_f16 * | src, | ||
| Vect3D_f16 * | dest | ||
| ) |
Process 3D inverse rotation only to specified 3D vertex.
| t | Transformation object containing rotation parameter. |
| src | Source 3D vertex. |
| dest | Destination 3D vertex. |
| void M3D_setCamDistance | ( | fix16 | value | ) |
Set camera scene distance.
| value | Distance between the camera and the scene. |
| void M3D_setViewport | ( | u16 | w, |
| u16 | h | ||
| ) |
Set viewport dimension.
| w | Viewport width (use BMP_WIDTH if you use 3D with software bitmap engine) |
| h | Viewport height (use BMP_HEIGHT if you use 3D with software bitmap engine) |
| void M3D_transform | ( | Transformation3D * | t, |
| const Vect3D_f16 * | src, | ||
| Vect3D_f16 * | dest, | ||
| u16 | numv | ||
| ) |
Process 3D transform (rotation and translation) to specified 3D vertices buffer.
| t | Transformation object containing rotation and translation parameters. |
| src | Source 3D vertices buffer. |
| dest | Destination 3D vertices buffer. |
| numv | Number of vertices to transform. |
| void M3D_translate | ( | Transformation3D * | t, |
| Vect3D_f16 * | vertices, | ||
| u16 | numv | ||
| ) |
Process 3D translation only to specified 3D vertices buffer.
| t | Transformation object containing translation parameter. |
| vertices | 3D vertices buffer to translate. |
| numv | Number of vertices to translate. |